﻿// 0726train03.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <stack>

using namespace std;


/*
 - x#y = 4*x+3*y+2
 - x$y = 2*x+y+3

非法输入
- #4$5 这种缺少操作数；
- 4$5# 这种缺少操作数；
- 4#$5 这种缺少操作数；
- 4 $5 有空格；
- 3+4-5*6/7 有其他操作符；

输入
7#6$5#12
输出
157

 * 
 */

int Calculate3(int x, int y)
{
	//x#y = 4*x+3*y+2
	return 4 * x + 3 * y + 2;
}

int CalculateDollar(int x, int y)
{
	//x$y = 2*x+y+3
	return 2 * x + y + 3;
}

bool IsDigital(char oh_char)
{
	if (oh_char>='0' && oh_char<='9')
	{
		return true;
	}
	return false;
}

void solve01(string str)
{
	vector<int>oh_stack_vec;
	int result = 0;
	bool is_prev3 = false;

	//结尾补空格，处理最后一个#
	string oh_str = str + " ";

	for (int i=0; i<oh_str.size();i++)
	{
		char oh_char = oh_str[i];
		if (IsDigital(oh_char))
		{
			//1碰上数字就计算
			int curr_num = oh_char - '0';
			result = result * 10 + curr_num;
		}
		else
		{
			//2碰到符号，塞到栈里
			oh_stack_vec.push_back(result);
			result = 0;

			if (is_prev3)
			{
				int right = oh_stack_vec[oh_stack_vec.size() - 1];
				oh_stack_vec.pop_back();
				int left = oh_stack_vec[oh_stack_vec.size() - 1];
				oh_stack_vec.pop_back();

				int curr_result = Calculate3(left, right);
				oh_stack_vec.push_back(curr_result);

			}
			is_prev3 = oh_char == '#';
		}
	}

	int dollar_res = oh_stack_vec[0];
	for (int i=1;i<oh_stack_vec.size();i++)
	{
		dollar_res = CalculateDollar(dollar_res, oh_stack_vec[i]);
	}
	cout << dollar_res;
	//solve01
	//------
}


/*
 允许在桶的右边将篮球放入，可以在桶的左边和右边将篮球取出。
 桶里只有一个篮球，必须从左边取出。
 如老师按顺序放入1、2、3、4、5 共5个编号的篮球，
 那么小朋友可以依次取出的编号为1、2、3、4、5或者3、1、2、4、5编号的篮球，
 无法取出5、1、3、2、4编号的篮球


3、1、2、4、5的取出场景为
连续放入1、2、3号，右取3，左取1，2
放入4，左取4，放入5，左取5

输入：第一行篮球编号，第二行待检查编号

能取出打印方向，否则打印NO
4,5,6,7,0,1,2
6,4,0,1,2,5,7

RLRRRLL

 */

void solve02(deque<int>push_deque, deque<int>pop_deque)
{
	string result;

	deque<int>res_deque;

	int pop_index = 0;

	for (auto &oh_num:push_deque)
	{
		res_deque.push_back(oh_num);

		while (!res_deque.empty())
		{
			if (res_deque.front()==pop_deque[pop_index])
			{
				res_deque.pop_front();
				result += "L";
				pop_index++;
			}
			else if (!res_deque.empty() && res_deque.back()== pop_deque[pop_index])
			{
				res_deque.pop_back();
				result += "R";
				pop_index++;
			}
			else
			{
				break;
			}
		}


		//for------
		//---------
	}

	if (!res_deque.empty())
	{
		cout << "NO";
	}
	else
	{
		cout << result;
	}

	//solve02
	//-------
}


int main()
{
	{
		string input_push, input_pop;
		getline(cin, input_push);
		deque<int>push_deque;
		stringstream push_sstream(input_push);
		string token;
		while (getline(push_sstream, token, ','))
		{
			push_deque.push_back(stoi(token));
		}

		/*for (auto&num:push_deque)
		{
			cout << num;
		}*/

		getline(cin, input_pop);
		deque<int>pop_deque;
		stringstream pop_sstream(input_pop);
		while (getline(pop_sstream, token, ','))
		{
			pop_deque.push_back(stoi(token));
		}

		/*for (auto& num : pop_deque)
		{
			cout << num;
		}*/

		solve02(push_deque, pop_deque);

		return 0;
	}

	solve01("7#6$5#12");
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
